package cn.le.clone;

/**
 * clone()方法虽然是在object类中实现，但是克隆本身是受限制的
 *
 * 实现克隆必须要是重写object.clone()方法并实现Cloneable接口
 *实现和重写的方法都是可以继承的，所以父类重写和实现了，那么子类就继承了其克隆的能力
 *
 * clone()克隆是按位复制(利用RTTI判断克隆的对象的实际大小，然后将二进制从原位置复制到新对象的存储空间)的浅复制
 *
 */
public class A implements Cloneable{

    @Override
    protected Object clone() {
        try {
            return super.clone();
        } catch (CloneNotSupportedException e) {
            e.printStackTrace();
        }
        return null;
    }

}
class B extends A{

    public static void main(String[] args) {
        B b = new B();
        b.clone();

    }
}
